home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / pavt150.zip / CAPI.ZIP / JAMSYS.H < prev    next >
C/C++ Source or Header  |  1993-07-01  |  9KB  |  246 lines

  1. /*
  2. **  JAM(mbp) - The Joaquim-Andrew-Mats Message Base Proposal
  3. **
  4. **  C API
  5. **
  6. **  Written by Joaquim Homrighausen and Mats Wallin.
  7. **
  8. **  ----------------------------------------------------------------------
  9. **
  10. **  jamsys.h (JAMmb)
  11. **
  12. **  Compiler and platform dependant definitions
  13. **
  14. **  Copyright 1993 Joaquim Homrighausen, Andrew Milner, Mats Birch, and
  15. **  Mats Wallin. ALL RIGHTS RESERVED.
  16. **
  17. **  93-06-28    JoHo/MW
  18. **  Initial coding.
  19. */
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. #ifndef __JAMSYS_H__
  25. #define __JAMSYS_H__
  26.  
  27. /*
  28. **  The following assumptions are made about compilers and platforms:
  29. **
  30. **  __MSDOS__       Defined if compiling for MS-DOS
  31. **  _WINDOWS        Defined if compiling for Microsoft Windows
  32. **  __OS2__         Defined if compiling for OS/2 2.x
  33. **  __sparc__       Defined if compiling for Sun Sparcstation
  34. **  __50SERIES      Defined if compiling for Prime with Primos
  35. **
  36. **  __SMALL__       Defined if compiling under MS-DOS in small memory model
  37. **  __MEDIUM__      Defined if compiling under MS-DOS in medium memory model
  38. **  __COMPACT__     Defined if compiling under MS-DOS in compact memory model
  39. **  __LARGE__       Defined if compiling under MS-DOS in large memory model
  40. **
  41. **  __ZTC__         Zortech C++ 3.x
  42. **  __BORLANDC__    Borland C++ 3.x
  43. **  __TURBOC__      Turbo C 2.0
  44. **  __TSC__         JPI TopSpeed C 1.06
  45. **  _MSC_VER        Microsoft C 6.0 and later
  46. **  _QC             Microsoft Quick C
  47. */
  48. #if defined(_WINDOWS)
  49.     #ifndef _INC_WINDOWS
  50.         #include <windows.h>
  51.     #endif
  52.  
  53.     #if defined(__MSDOS__)
  54.         #undef __MSDOS__
  55.     #endif
  56.  
  57.     typedef long                INT32;      /* 32 bits signed integer     */
  58.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  59.     typedef short int           INT16;      /* 16 bits signed integer     */
  60.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  61.     typedef char                CHAR8;      /* 8 bits signed integer      */
  62.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  63.     typedef HFILE               FHANDLE;    /* File handle                */
  64.  
  65.     #if defined(__ZTC__)               /* Zortech C++ 3.x */
  66.         #define _JAMFAR _far
  67.         #define _HUGE   _huge
  68.         #define _PASCAL _pascal
  69.         #define _EXPORT _export
  70.     #elif defined(__BORLANDC__)        /* Borland C++ 3.x */
  71.         #define _JAMFAR far
  72.         #define _HUGE   huge
  73.         #define _PASCAL pascal
  74.         #define _EXPORT _export
  75.     #elif defined(_MSC_VER) ||         /* Microsoft C 6.0 and later */   \
  76.           defined(_QC)                 /* Microsoft Quick C 2.51 and later */
  77.         #define _JAMFAR _far
  78.         #define _HUGE   _huge
  79.         #define _PASCAL _pascal
  80.         #define _EXPORT _export
  81.         #if defined(_M_I86SM)
  82.             #define __SMALL__
  83.         #elif defined(_M_I86MM)
  84.             #define __MEDIUM__
  85.         #elif defined(_M_I86CM)
  86.             #define __COMPACT__
  87.         #elif defined(_M_I86LM)
  88.             #define __LARGE__
  89.         #endif
  90.     #else
  91.         #error Unsupported compiler
  92.     #endif
  93.  
  94.     #if defined(JAMCAPI) && !defined(__LARGE__)
  95.         #error Only LARGE memory model supported for the JAM Windows DLL
  96.     #endif
  97.  
  98.     #define _JAMPROC            _JAMFAR _PASCAL _EXPORT
  99.     #define _JAMDATA            _JAMFAR
  100.  
  101. #elif defined(__MSDOS__)
  102.     typedef long                INT32;      /* 32 bits signed integer     */
  103.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  104.     typedef short int           INT16;      /* 16 bits signed integer     */
  105.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  106.     typedef char                CHAR8;      /* 8 bits signed integer      */
  107.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  108.     typedef int                 FHANDLE;    /* File handle                */
  109.  
  110.     #define _JAMPROC
  111.     #define _JAMDATA
  112.  
  113.     #if defined(__ZTC__)               /* Zortech C++ 3.x */
  114.         #define _JAMFAR    _far
  115.     #elif defined(__BORLANDC__)        /* Borland C++ 3.x */
  116.         #define _JAMFAR    far
  117.     #elif defined(__TURBOC__)          /* Turbo C 2.0 */
  118.         #define _JAMFAR    far
  119.     #elif defined(__TSC__)             /* JPI TopSpeed C 1.06 */
  120.         #define _JAMFAR    far
  121.         #if defined(M_I86SM)
  122.             #define __SMALL__
  123.         #elif defined(M_I86MM)
  124.             #define __MEDIUM__
  125.         #elif defined(M_I86CM)
  126.             #define __COMPACT__
  127.         #elif defined(M_I86LM)
  128.             #define __LARGE__
  129.         #endif
  130.     #elif defined(_MSC_VER) ||         /* Microsoft C 6.0 and later */   \
  131.           defined(_QC)                 /* Microsoft Quick C 2.51 and later */
  132.         #define _JAMFAR    _far
  133.         #if defined(_M_I86SM)
  134.             #define __SMALL__
  135.         #elif defined(_M_I86MM)
  136.             #define __MEDIUM__
  137.         #elif defined(_M_I86CM)
  138.             #define __COMPACT__
  139.         #elif defined(_M_I86LM)
  140.             #define __LARGE__
  141.         #endif
  142.     #else
  143.         #error Unsupported compiler
  144.     #endif
  145.  
  146. #elif defined(__OS2__)
  147.     typedef long                INT32;      /* 32 bits signed integer     */
  148.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  149.     typedef short int           INT16;      /* 16 bits signed integer     */
  150.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  151.     typedef char                CHAR8;      /* 8 bits signed integer      */
  152.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  153.     typedef HFILE               FHANDLE;    /* File handle                */
  154.  
  155.     #define _JAMFAR
  156.     #define _JAMPROC
  157.     #define _JAMDATA
  158.  
  159. #elif defined(__sparc__) || defined(__50SERIES)
  160.     typedef long                INT32;      /* 32 bits signed integer     */
  161.     typedef unsigned long       UINT32;     /* 32 bits unsigned integer   */
  162.     typedef short int           INT16;      /* 16 bits signed integer     */
  163.     typedef unsigned short int  UINT16;     /* 16 bits unsigned integer   */
  164.     typedef char                CHAR8;      /* 8 bits signed integer      */
  165.     typedef unsigned char       UCHAR8;     /* 8 bits unsigned integer    */
  166.     typedef int                 FHANDLE;    /* File handle                */
  167.  
  168.     #define _JAMFAR
  169.     #define _JAMPROC
  170.     #define _JAMDATA
  171.  
  172. #else
  173.     #error Undefined platform
  174. #endif
  175.  
  176. typedef INT32 _JAMDATA *        INT32ptr;
  177. typedef UINT32 _JAMDATA *       UINT32ptr;
  178. typedef INT16 _JAMDATA *        INT16ptr;
  179. typedef UINT16 _JAMDATA *       UINT16ptr;
  180. typedef CHAR8 _JAMDATA *        CHAR8ptr;
  181. typedef UCHAR8 _JAMDATA *       UCHAR8ptr;
  182. typedef void _JAMDATA *         VOIDptr;
  183.  
  184. /*
  185. **  Values for "AccessMode" and "ShareMode" parameter to JAMsysSopen.
  186. */
  187.  
  188. #if defined(_WINDOWS)
  189.     #define JAMO_RDWR           READ_WRITE
  190.     #define JAMO_RDONLY         READ
  191.     #define JAMO_WRONLY         WRITE
  192.     #define JAMSH_DENYNO        OF_SHARE_DENY_NONE
  193.     #define JAMSH_DENYRD        OF_SHARE_DENY_READ
  194.     #define JAMSH_DENYWR        OF_SHARE_DENY_WRITE
  195.     #define JAMSH_DENYRW        OF_SHARE_EXCLUSIVE
  196. #elif defined(__MSDOS__) || defined(__OS2__) 
  197.     #define JAMO_RDWR           O_RDWR
  198.     #define JAMO_RDONLY         O_RDONLY
  199.     #define JAMO_WRONLY         O_WRONLY
  200.     #define JAMSH_DENYNO        SH_DENYNO
  201.     #define JAMSH_DENYRD        SH_DENYRD
  202.     #define JAMSH_DENYWR        SH_DENYWR
  203.     #define JAMSH_DENYRW        SH_DENYRW
  204. #elif defined(__sparc__)
  205.     #define JAMO_RDWR           O_RDWR
  206.     #define JAMO_RDONLY         O_RDONLY
  207.     #define JAMO_WRONLY         O_WRONLY
  208.     #define JAMSH_DENYNO        0
  209.     #define JAMSH_DENYRD        0
  210.     #define JAMSH_DENYWR        0
  211.     #define JAMSH_DENYRW        0
  212. #elif defined(__50SERIES)
  213.     #define JAMO_RDWR           2
  214.     #define JAMO_RDONLY         0
  215.     #define JAMO_WRONLY         1
  216.     #define JAMSH_DENYNO        0
  217.     #define JAMSH_DENYRD        0
  218.     #define JAMSH_DENYWR        0
  219.     #define JAMSH_DENYRW        0
  220. #endif
  221.  
  222.  
  223. /*
  224. **  Structure to contain date/time information
  225. */
  226. typedef struct JAMtm
  227.     {
  228.     int     tm_sec,                    /* Seconds 0..59                     */
  229.             tm_min,                    /* Minutes 0..59                     */
  230.             tm_hour,                   /* Hour of day 0..23                 */
  231.             tm_mday,                   /* Day of month 1..31                */
  232.             tm_mon,                    /* Month 0..11                       */
  233.             tm_year,                   /* Years since 1900                  */
  234.             tm_wday,                   /* Day of week 0..6 (Sun..Sat)       */
  235.             tm_yday,                   /* Day of year 0..365                */
  236.             tm_isdst;                  /* Daylight savings time (not used)  */
  237.     } JAMTM, _JAMDATA * JAMTMptr;
  238.  
  239. #endif /* __JAMSYS_H__ */
  240.  
  241. #ifdef __cplusplus
  242. }
  243. #endif
  244.  
  245. /* end of file "jamsys.h" */
  246.